/**
 *  Copyright (c) 2017-2022 Rushang Co.Ltd All Rights Reserved.
 */
package com.rshang.rsdp.kit;

import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.google.common.base.Splitter;

import java.util.UUID;

import org.joda.time.DateTime;

/**
 * 功能简介：字符串工具类<br/>
 * @author zhangjun
 * @create 2017年7月31日下午2:01:35
 * 
 */
public class StrKits {

	/**
	 *  Object转换String
	 * @param obj	object对象
	 * @return
	 * 		String
	 */
	public static String emptyToStr(Object obj){
		return emptyToStrDefault(obj,"");
	}
	
	/**
	 * Object转换int
	 * @param obj			object对象
	 * @param defaultValue	默认值
	 * @return
	 * 		int
	 */
	public static int emptyToIntDefault(Object obj,int defaultValue){
		if(obj==null||String.valueOf(obj).length()==0)
		{
			return defaultValue;
		}
		return Integer.parseInt(String.valueOf(obj));
	}
	
	/**
     * Object转换double
     * @param obj           object对象
     * @param defaultValue  默认值
     * @return
     *      double
     */
	public static double emptyToDoubleDefault(Object obj,double defaultValue){
        if(obj==null||String.valueOf(obj).length()==0)
        {
            return defaultValue;
        }
        return Double.parseDouble(String.valueOf(obj));
    }
	
	/**
     * Object转换double
     * @param obj           object对象
     * @return
     *      double
     */
    public double emptyToDouble(Object obj){
        return emptyToDoubleDefault(obj,0);
    }
	
	/**
	 * Object转换int 为空返回0
	 * @param obj	object对象
	 * @return
	 * 		int
	 */
	public static int emptyToInt(Object obj){
		return emptyToIntDefault(obj,0);
	}
	
	/**
	 * Object转换String 如果为空返回默认值
	 * @param obj			object对象
	 * @param defaultValue	默认值
	 * @return
	 * 		String
	 */
	public static String emptyToStrDefault(Object obj,String defaultValue){
		if(obj==null)
		{
			return defaultValue;
		}
		return String.valueOf(obj);
		/*try {
			return new String(String.valueOf(obj).getBytes("ISO-8859-1"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			logger.error("",e);
			return "";
		}*/
	}

	/**
	 * Object转换String 如果为空返回默认值
	 * @param String		str
	 * @param defaultValue	默认值
	 * @return
	 * 		String
	 */
	public static String emptyToStrDefault(String str,String defaultValue){
		if(str==null||str.length()==0)
		{
			return defaultValue;
		}
		return str;
		/*try {
			return new String(String.valueOf(obj).getBytes("ISO-8859-1"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			logger.error("",e);
			return "";
		}*/
	}
	
	/**
	 * uuid生成方法
	 * @return
	 * 		String
	 */
	public static String uuid(){
		return UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
	}
	
	/**
     * 获取字符串的长度，如果有中文，则每个中文字符计为2位
     * @param value 指定的字符串
     * @return 字符串的长度
     */
    public static int length(String value) {
        int valueLength = 0;
        String chinese = "[\u0391-\uFFE5]";
        /* 获取字段值的长度，如果含中文字符，则每个中文字符长度为2，否则为1 */
        for (int i = 0; i < value.length(); i++) {
            /* 获取一个字符 */
            String temp = value.substring(i, i + 1);
            /* 判断是否为中文字符 */
            if (temp.matches(chinese)) {
                /* 中文字符长度为2 */
                valueLength += 2;
            } else {
                /* 其他字符长度为1 */
                valueLength += 1;
            }
        }
        return valueLength;
    }

	/**
	 * 生成排序条件
	 * @param sort	排序字段字符串
	 * @param order	排序类型字符串
	 *
	 * @return
	 * 		String
	 */
	public static String getOrderBy(String sort,String order){
		if(StringUtils.isEmpty(sort))
		{
			return "";
		}
		else
		{
			if(sort.indexOf(",")!=-1)
			{
				StringBuilder builder = new StringBuilder();
				String[] sortArr = sort.split(",");
				String[] orderArr = order.split(",");
				for(int i=0,count=sortArr.length;i<count;i++)
				{
					builder.append(sortArr[i]);
					builder.append(" ");
					builder.append(orderArr[i]);
					if(i!=(count-1))
					{
						builder.append(",");
					}
				}
				return builder.toString().toUpperCase();
			}
			return sort.toUpperCase()+" "+order.toUpperCase();
		}
	}
	
	/**
	 * 获取当前日期格式化字符串
	 * @param pattern	日期格式
	 * @return String
	 */
	public static String getNowDateStr(String pattern) {
		return new DateTime().toString("yyyy年MM月dd日");
	}
}
